package cn.simon.free.redis.mq.core.producer;

import cn.simon.free.redis.mq.model.Message;

import java.util.concurrent.TimeUnit;

/**
 * @author simon
 * @date 2021/7/12 17:42
 * @copyright:
 * @modifier
 * @motto a no talent, people who have to study hard
 */
public interface Producer<T extends Message> {

    /**
     * 发送消息
     *
     * @param queueName 队列名称
     * @param message   消息体
     * @return
     */
    String send(String queueName, T message);

    /**
     * 发送消息
     *
     * @param queueName 队列名称
     * @param message   消息体
     * @param delayTime 几秒后过期
     * @return
     */
    String send(String queueName, T message, long delayTime);

    /**
     * 发送消息
     *
     * @param queueName 队列名称
     * @param message   消息体
     * @param delayTime 几秒后过期
     * @param timeUnit  时间类型
     * @return
     */
    String send(String queueName, T message, long delayTime, TimeUnit timeUnit);

}
